﻿#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

//左移操作符
//int main()
//{
//	int a = 5;
//	a = a << 1;
//	printf("%d\n", a); 
//	//0000 1010
//
//	return 0;
//}

//右移操作符
//int main()
//{
//	int a = 5;
//	a = a >> 1;
//	printf("%d", a);
//	// 0000 0000 0000 0000 0000 0000 0000 0010
//
//	return 0;
//}

//⼀道变态的⾯试题：
//不能创建临时变量（第三个变量），实现两个整数的交换

//int main()
//{
//	int a = 3;
//	int b = 5;
//
//	//方法1：
//	/*int c = 0;
//	c = a;
//	a = b;
//	b = c;*/
//
//	//方法2：
//	/*a = a + b;
//	b = a - b;
//	a = a - b;*/
//
//	//方法3：带入法
//	// 0000 0011
//	// 0000 0101
//
//	// 0000 0110 a = 6
//	// 0000 0101 
//
//	// 0000 0011 b = 3
//	// 0000 0110 
//
//	// 0000 0101 a = 5
//
//	 na = a ^ b;
//	b = a ^ b;
//	a = a ^ b;
//	printf("%d %d", a, b);
//	
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int count = 0;
//	int i = 0;
//	for (i = 0; i < 32; i++)
//	{
//		if (((a >> i) & 1) == 1)
//		{
//			count++;
//		}
//	}
//	printf("%d", count);
//
//	return 0;
//}

//int fufu(int n)
//{
//	int count = 0;
//	while (n)
//	{
//		if (n % 2 == 1)
//		{
//			count++;
//		}
//		n = n / 2;
//	}
//
//	return count;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fufu(n);
//	printf("%d", ret);
//
//	return 0;
//}


//int fufu(int n)
//{
//	int count = 0;
//	
//	while (n)
//	{
//		n = n & (n - 1);
//		count++;
//	}
//
//	return count;
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = fufu(n);
//	printf("%d", ret);
//
//	return 0;
//}


//判断一个数是否是2的次方数
//void fufu(int n)
//{
//	//0001
//	//0010
//	//0100
//	//1000
//
//	if (n == n & (n - 1) == 0)
//	{
//		printf("1");
//	}
//	else
//	{
//		printf("0");
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	fufu(n);
//	
//
//	return 0;
//}